package cn.yunyichina.provider.hisiface.service.impl;

import java.util.List;

import org.springframework.stereotype.Service;

import cn.yunyichina.provider.hisiface.service.AbstractService;
import cn.yunyichina.provider.iface.entity.common.ResCommon;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.InPatientFeeRecordsVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.InPatientFeeRecordsVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.InPatientSumFeeListVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.InPatientSumFeeListVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBCheckRecordVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBCheckRecordVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBInPatientDiagnosisVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBInPatientDiagnosisVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBInPatientReportIdsVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBInPatientReportIdsVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBInspectRecordVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBInspectRecordVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBMZDiagnosisInfoVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBMZDiagnosisInfoVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBMZFeeRecordsVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBMZFeeRecordsVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBPatientsVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBPatientsVoResponse;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBSurgeryRecordVo;
import cn.yunyichina.provider.iface.entity.hisiface.shangbao.SBSurgeryRecordVoResponse;

/**
 * 商保快赔
 *
 * @author zhou
 * @date 2017年7月11日
 */
@Service
public class HisifaceShangbaoServiceImpl extends AbstractService {

	/**
	 * 获取商保患者信息列表
	 * 
	 * @param sbPatientsVo
	 * @return
	 */
	public ResCommon<List<SBPatientsVoResponse>> getSBPatients(SBPatientsVo patientsVo) {
		String methodCode = "getSBPatients";
        String methodName = "获取商保患者信息列表";

        return doExecList(methodCode, methodName, patientsVo, SBPatientsVoResponse.class);
	}
	
	/**
	 * 获取商保门诊诊疗信息
	 * 
	 * @param diagnosisInfoVo
	 * @return
	 */
	public ResCommon<SBMZDiagnosisInfoVoResponse> getSBMZDiagnosisInfo(SBMZDiagnosisInfoVo diagnosisInfoVo) {
		String methodCode = "getSBMZDiagnosisInfo";
        String methodName = "获取商保门诊诊疗信息";
        
        return doExec(methodCode, methodName, diagnosisInfoVo, SBMZDiagnosisInfoVoResponse.class);
	}

	/**
	 * 获取商保门诊费用信息
	 * 
	 * @param feeRecordsVo
	 * @return
	 */
	public ResCommon<List<SBMZFeeRecordsVoResponse>> getSBMZFeeRecords(SBMZFeeRecordsVo feeRecordsVo) {
		String methodCode = "getSBMZFeeRecords";
        String methodName = "获取商保门诊费用信息";
        
        return doExecList(methodCode, methodName, feeRecordsVo, SBMZFeeRecordsVoResponse.class);
	}

	/**
	 * 获取商保住院诊疗信息
	 * 
	 * @param inPatientDiagnosisVo
	 * @return
	 */
	public ResCommon<SBInPatientDiagnosisVoResponse> getSBInPatientDiagnosis(SBInPatientDiagnosisVo inPatientDiagnosisVo) {
		String methodCode = "getSBInPatientDiagnosis";
        String methodName = "获取商保住院诊疗信息";
        
        return doExec(methodCode, methodName, inPatientDiagnosisVo, SBInPatientDiagnosisVoResponse.class);
	}

	/**
	 * 获取商保住院日费用信息
	 * 
	 * @param inPatientFeeRecordsVo
	 * @return
	 */
	public ResCommon<List<InPatientFeeRecordsVoResponse>> getInPatientFeeRecords(InPatientFeeRecordsVo inPatientFeeRecordsVo) {
		String methodCode = "getInPatientFeeRecords";
        String methodName = "获取商保住院日费用信息";
        
        return doExecList(methodCode, methodName, inPatientFeeRecordsVo, InPatientFeeRecordsVoResponse.class);
	}
	
	/**
	 * 获取商保检验信息
	 * 
	 * @param inspectRecordVo
	 * @return
	 */
	public ResCommon<SBInspectRecordVoResponse> getSBInspectRecord(SBInspectRecordVo inspectRecordVo) {
		String methodCode = "getSBInspectRecord";
        String methodName = "获取商保检验信息";
        
        return doExec(methodCode, methodName, inspectRecordVo, SBInspectRecordVoResponse.class);
	}
	
	/**
	 * 获取商保检查信息
	 * 
	 * @param checkRecordVo
	 * @return
	 */
	public ResCommon<SBCheckRecordVoResponse> getSBCheckRecord(SBCheckRecordVo checkRecordVo) {
		String methodCode = "getSBCheckRecord";
        String methodName = "获取商保检查信息";
        
        return doExec(methodCode, methodName, checkRecordVo, SBCheckRecordVoResponse.class);
	}
	
	/**
	 * 获取商保手术记录
	 * 
	 * @param surgeryRecordVo
	 * @return
	 */
	public ResCommon<SBSurgeryRecordVoResponse> getSBSurgeryRecord(SBSurgeryRecordVo surgeryRecordVo) {
		String methodCode = "getSBSurgeryRecord";
        String methodName = "获取商保手术记录";
        
        return doExec(methodCode, methodName, surgeryRecordVo, SBSurgeryRecordVoResponse.class);
	}
	
	/**
	 * 获取商保住院总费用清单
	 * 
	 * @param inPatientSumFeeListVo
	 * @return
	 */
	public ResCommon<InPatientSumFeeListVoResponse> getInPatientSumFeeList(InPatientSumFeeListVo inPatientSumFeeListVo) {
		String methodCode = "getInPatientSumFeeList";
        String methodName = "获取商保住院总费用清单";
        
        return doExec(methodCode, methodName, inPatientSumFeeListVo, InPatientSumFeeListVoResponse.class);
	}
	
	/**
	 * 获取住院检验和检查reportIds
	 * 
	 * @param sbInPatientReportIdsVo
	 * @return
	 */
	public ResCommon<SBInPatientReportIdsVoResponse> getSBInPatientReportIds(SBInPatientReportIdsVo sbInPatientReportIdsVo) {
		String methodCode = "getSBInPatientReportIds";
        String methodName = "获取住院检验和检查reportIds";
        
        return doExec(methodCode, methodName, sbInPatientReportIdsVo, SBInPatientReportIdsVoResponse.class);
	}
}
